home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / video / fly8111-.000 / fly8111- / fly8 / olow.c < prev    next >
C/C++ Source or Header  |  1979-12-31  |  2KB  |  93 lines

  1. /* --------------------------------- olow.c --------------------------------- */
  2.  
  3. /* This is part of the flight simulator 'fly8'.
  4.  * Author: Eyal Lebedinsky (eyal@ise.canberra.edu.au).
  5. */
  6.  
  7. /* Object description: ground at close range.
  8. */
  9.  
  10. #include "fly.h"
  11.  
  12.  
  13. /* This is a small, simple x-y reference grid that follows the plane and
  14.  * only shows when it is very low.
  15. */
  16.  
  17. static SHAPE shape_low = {
  18.     0,
  19.     0,
  20.     0,
  21.     1L,        /* weight */
  22.     0        /* drag */
  23. };
  24.  
  25. #define    GUNIT    100
  26. #define HORIZON    (1000L*VONE)
  27.  
  28. LOCAL_FUNC int FAR
  29. init_low (BODY *b)
  30. {
  31.     int    i, last, g, h;
  32.     VERTEX    *p, *vx_low;
  33.  
  34.     i = (int)(HORIZON/VONE/GUNIT);
  35.     last = 2*i+1;
  36.  
  37.     if (!(vx_low = (VERTEX *)memory_calloc (sizeof (*vx_low), 4*last+1)))
  38.         return (1);
  39.  
  40.     shape_low.v = vx_low;
  41.     shape_low.flags |= SH_DYNVERTEX;
  42.  
  43.     h = GUNIT*i;
  44.     for (g = -h, p = vx_low, i = 0; i < last; ++i, g += GUNIT) {
  45.         p->V[X] = g;    p->V[Y] = -h;    p->V[Z] = 0;
  46.         p->flags = V_MOVE;    ++p;
  47.  
  48.         p->V[X] = g;    p->V[Y] = h;    p->V[Z] = 0;
  49.         p->flags = V_DRAW;    ++p;
  50.  
  51.         p->V[X] = -h;    p->V[Y] = g;    p->V[Z] = 0;
  52.         p->flags = V_MOVE;    ++p;
  53.  
  54.         p->V[X] = h;    p->V[Y] = g;    p->V[Z] = 0;
  55.         p->flags = V_DRAW;    ++p;
  56.     }
  57.     p->flags = 0;
  58.     return (0);
  59. }
  60.  
  61. LOCAL_FUNC int FAR
  62. create_low (OBJECT *p)
  63. {
  64.     p->color = CC_LRED;
  65.     p->time = FOREVER;
  66.     Mident (p->T);
  67.  
  68.     return (0);
  69. }
  70.  
  71. LOCAL_FUNC void FAR
  72. dynamics_low (OBJECT *p, int interval)
  73. {
  74.     p->R[X] = (((CV->R[X]/VONE+GUNIT/2)/GUNIT)*GUNIT)*VONE;
  75.     p->R[Y] = (((CV->R[Y]/VONE+GUNIT/2)/GUNIT)*GUNIT)*VONE;
  76. }
  77.  
  78. #undef GUNIT
  79. #undef HORIZON
  80.  
  81. BODY FAR BoLow = {
  82.     0,
  83.     0,
  84.     "LOWLAND",
  85.     &shape_low,
  86.     init_low,
  87.     gen_term,
  88.     create_low,
  89.     gen_delete,
  90.     dynamics_low,
  91.     gen_hit
  92. };
  93.